# Author:Lin Mengshi

#知识点_列表的一般方法
# ”打开或关闭“代码的快捷键：ctrl + /

# 列表 1.取值-> 1.index 索引取单个值 2.slice 切片取一些值 还是一个列表

# names = "Alex,Mary,Jack"
#          01234...
# names_list = ["Alex","Mary","Jack"]
#                0      1      2
# print(names[0:4])
# print(names_list[0])

# python中一切皆是对象！
# 2.列表增加
# 2.1 append() 增加元素到list的末位
#     append() 一般用来新建列表会使用到
names_J = []
stu_成绩 = [97,95,93,95,92,96,92,95,100]

names = ["Mike","Mary","Jan","Jack"]
names.append("Mengshi")
names.append("Jiaer")
for i in names:
    if i[0] =="J":
        names_J.append(i)
print("names_J=",names_J)
print(names)

# 2.2 insert() 插入元素
names.insert(2,"Lihua")   # insert(插入对象的索引,对象)
print("插入Lihua之后的names：",names)

# 3.删除/移除 删除第一个出现的值
# 3.1 remove() 使用remove之前，应该先判断该元素是否存在在该list当中。
print("Mengshi"in names)
names_user = input("删除内容：")
while True:
    if "names_user" in names:
        names.remove(names_user)
    else:
        break

# names.remove("Mengshi")
print("remove之后的names:",names)

# 3.2 pop() 删除 pop()不填内容 对应记忆 ==> append() 删除末位
names.pop(0)
print(names)

# 4. index() 返回第一个出现的索引值
print(names.index("Mengshi"))

# 5. sort()排序 默认从小到大排序 reverse = False(默认)小—大
#                           reverse = True 大—小
stu_成绩.sort(reverse=True)
print(stu_成绩)
names.sort() # 字符串 以首字母按照ASCII编码表顺序排序
print(names)

# 6. count() 查看某元素出现次数
print(stu_成绩.count(95))

# 7. clear() 清空list
names.clear()
print(names)

# 8. extend() 是有顺序的,操作哪一个list，哪一个list就先写
names.extend(names_J)
print(names)

# 知识点_列表的复制
# list的真正意义的复制
# 1.假复制 用 = 进行赋值 错误的复制列表操作
# names = ["Mike","Mary","Jan","Jack"]
# names_源文件 = names
# names.append("Mengshi")
# print("names =",names)
# print("names_源文件=",names_源文件)

# 2.正确的方法1：copy()
names = ["Mike","Mary","Jan","Jack"]
names_源文件 = names.copy()
names.append("Mengshi")
print("names =",names)
print("names_源文件=",names_源文件)

# 3.正确的方法2：切片[:]
names = ["Mike","Mary","Jan","Jack"]
names_源文件 = names[:]
names.append("Mengshi")
print("names =",names)
print("names_源文件=",names_源文件)

# 知识点_列表的高级用法
stu_成绩 = [97,95,93,95,92,96,92,95,100]
# 3.2 pop() 删除 pop()不填内容 对应记忆 ==> append() 删除末位    pop(0)删除第一个对象
# 目标：使用pop()删除 成绩为95的所有值
for i in stu_成绩:
    if i == 95:
        print(stu_成绩.index(i))

# 本质：list 本身有 index&value
pop_index_list = []
for index,value in enumerate(stu_成绩):
    # print(index,value)
    if value == 95:
        # stu_成绩.pop(index)
        stu_成绩[index] += 1
        # print(index,value)
print(stu_成绩)

# 课本项目
# P67 "Don't panic!" => list => "on tap"
phrase = "Don't panic!"
plist = list(phrase) # str 转化 list 使用的方法是 list(str)
print(phrase)
print(plist)

for i in range(4):
# 循环执行4次 删除末位 使用方法 pop()
    plist.pop()
print(plist)

plist.pop(0)
print(plist)

plist.remove("'")
print(plist)

# extend ==> plist+[plist.pop()  "a",plist.pop()  "p"]
plist.extend([plist.pop(),plist.pop()])  # 运算顺序，（1*（5+1））
# ['o','n','t',' ']a           p
print(plist)
# 调换"a""p"位置

plist.insert(2,plist.pop(3))
#                  ‘ ’
print(plist)

new_phrase = ''.join(plist)  # ? ''.join()  list转化为str 字符串拼接.
print("plist=",plist)  # list的方法会打乱和该表list的内容
print("new_phrase=",new_phrase)


# P60 "vowels"
# 版本1
vowels = ['a','e','i','o','u']
word = "Milliways"
for letter in word:
    if letter in vowels:
        print(letter)

# 版本2
vowels = ['a','e','i','o','u']
word = input("Provide a word to search for vowels:")
found =[]
for letter in word:
    if letter in vowels:
        if letter not in found:
            found.append(letter)
for vowel in found:
    print(vowel)